home *** CD-ROM | disk | FTP | other *** search
/ Utilities Professional 1-1500 / Utilities Professional 1-1500 (1994)(WPD)[!].iso / 12511500 / var1432.dms / var1432.adf / NDUK-V40.lha / V40 / devtools / DOCS / autodoc.style < prev    next >
Text File  |  1993-05-13  |  9KB  |  297 lines

  1. ----------------------------------------------------------------------------
  2. Autodoc style guide - June 1990
  3. ----------------------------------------------------------------------------
  4.  
  5. Autodocs are part of each source module.
  6.  
  7. Autodoc looks at the start of each line, and considers a match of the
  8. pattern "/****** " or "******* " as the start of an autodoc (* or /, 6
  9. asterisks, then a space).  An autodoc ends with at least three asterisks at 
  10. the start of a line ("***").  If the start string is "/****i* " the autodoc is
  11. "internal", and will be extracted only if the "internal" flag of autodoc is
  12. enabled (this does not work yet).
  13.  
  14. Please look at your autodoc output to see if it has problems before
  15. releasing.
  16.  
  17.  
  18. Here is a sample "correct" autodoc:
  19.  
  20.  
  21. /****** financial.library/StealMoney ******************************************
  22. *   NAME    
  23. *     StealMoney -- Steal money from the Federal Reserve Bank. (V77)
  24. *   SYNOPSIS
  25. *    error = StealMoney( userName,amount,destAccount,falseTrail )
  26. *    D0,Z                D0       D1.W    A0         [A1]
  27. *
  28. *    BYTE StealMoney
  29. *         ( STRPTR,UWORD,struct AccountSpec *,struct falseTrail *);
  30. *
  31. *   FUNCTION
  32. *    Transfer money from the Federal Reserve Bank into the specified
  33. *    interest-earning checking account.  No records of the transaction
  34. *    will be retained.
  35. *   INPUTS
  36. *     userName      - name to make the transaction under.  Popular favorites
  37. *                    include "Ronald Reagan" and "Mohamar Quadaffi".
  38. *    amount        - Number of dollars to transfer (in thousands).
  39. *    destAccount   - A filled-in AccountSpec structure detailing the
  40. *                    destination account (see financial/accounts.h).
  41. *            If NULL, a second Great Depression will be triggered.
  42. *    falseTrail    - If the DA_FALSETRAIL bit is set in the destAccount,
  43. *            a falseTrail structure must be provided.
  44. *    
  45. *   RESULT
  46. *     error - zero for success, else an error code is returned (see
  47. *            financial/errors.h).  The Z condition code is guaranteed.
  48. *   EXAMPLE
  49. *    Federal regulations prohibit a demonstration of this function. 
  50. *
  51. *   NOTES
  52. *    Do not run on Tuesdays!
  53. *
  54. *   BUGS
  55. *     Before V88, this function would occasionally print the address and
  56. *    home phone number of the caller on local police 976 terminals.
  57. *    We are confident that this problem has been resolved.
  58. *   SEE ALSO
  59. *     CreateAccountSpec(),security.device/SCMD_DESTROY_EVIDENCE,
  60. *    financial/misc.h
  61. ******************************************************************************
  62. *
  63. *     Private notes:
  64. *        A4=stringbean
  65. *        A3=dogbreath
  66. *    Must preserve A1 for taxshelter.library
  67. */
  68.  
  69. A "blank" version of this autodoc is provided at the end of this file.
  70. There are three spaces from the * to the start of each HEADING.  There
  71. is one tab after the * before the start of the body text.  No other tabs
  72. are used.
  73.  
  74.  
  75. ------------------ general style notes -----------------------------------
  76.  
  77. It is critical that changes be noted in a sane manner.
  78.  
  79. When referring to a function, the standard format is FunctionName().
  80.  
  81.  
  82. Capitalization should be correct.  Here are some guidelines:
  83.  
  84.     1> The words Amiga, Exec, Workbench, Autoconfig, AmigaDOS, Kickstart,
  85.        Commodore, Commodore-Amiga, etc.  all are trademarks, and *must*
  86.        be capitalized.
  87.  
  88.     2> Names of "things" are as defined.  For example, "OpenWindow()",
  89.        and "a Window structure".  "fiddles with your window" does not
  90.        refer to the structure, and should not be capitalized.
  91.  
  92.  
  93. Lines terminate at column 77, so the autodocs are readable from within
  94. an Amiga CLI window.
  95.  
  96.  
  97. ------------------ heading-by-heading description ------------------------
  98.  
  99.  
  100. ---------------------------------
  101. ******* modulename.type/FunctionName *************************************
  102. ---------------------------------
  103.  
  104.     GOOD
  105.         exec.library/AddTail
  106.         math<various>.library/Function
  107.         audio.device/CD_ASKDEFAULTKEYMAP
  108.     
  109.     BAD
  110.         Library/Translator/Routine
  111.         Routine
  112.         Resources/Misc/Routine
  113.         audio.device/AskKeyMap
  114.  
  115. Before the / is the module name (as the caller sees it).  After the / is the
  116. function or command name (as the caller sees it).  For devices this is the all
  117. caps command placed into IO_COMMAND.  The special function name
  118. "--background--" may be used for background information common to many
  119. functions.
  120.  
  121.  
  122. /*
  123. ******* zip.zoop/Zum **************
  124.  
  125. Is an alternate form.
  126.  
  127.  
  128. ---------------------------------
  129. *   NAME    
  130. *     StealMoney -- Steal money from the Federal Reserve Bank. (V77)
  131. ---------------------------------
  132. Put YourFunctionName, " -- ", then a ONE LINE description of what it does.
  133. Real sentences with periods are preferred.
  134.  
  135.  
  136. ---------------------------------
  137. SYNOPSIS
  138. ---------------------------------
  139.  
  140. The SYNOPSIS has three parts.  The C calling convention, the
  141. assembly registers, and (new) the function prototype.
  142.  
  143. Do NOT indicate that the library base goes in A6, unless there is
  144. something special about your module.  If parts of a register are
  145. ignored, note that next to the register number.  The standard form
  146. is the register number followed by the number of bits (D0:16).  *Only
  147. specify this if the upper bits are, and always will be, ignored*.
  148.  
  149. An ANSI standard prototype is a new addition to our specification.
  150. This must be a ready-to-compile indication of the function's types.
  151. Do *not* use the base types, use the "types.h" file.  This line must compile!
  152.  
  153.  
  154. Base type          Use these typedefs            notes
  155. ----------------------------------------------------------------------------
  156. --untyped pointer--    void *       [  void *AllocMem( ULONG,ULONG );       ]
  157. --no parameter/return--    void       [  void RemakeDisplay(void);            ]
  158. --function pointer--    ???       [  (unresolved issue)                   ]
  159.  
  160. unsigned char *        STRPTR       [ "char *" is -not- acceptable!!        ]
  161. short            WORD
  162. unsigned short        UWORD
  163. unsigned short *    UWORD *    [  word aligned pointer]
  164. unsigned long *        ULONG *    [  word aligned pointer to ULONG object ]
  165.             BPTR       [  Our old friend               ]
  166.  
  167.  
  168. There is one line where you name the parameters and return values,
  169. another where you do the registers, and a third with the prototype
  170. that replaces the UNIX style type declarations that some few modules used
  171. (intuition mostly).  So, you can still refer to parameters and return
  172. values by name in the description.
  173.  
  174. old-style:
  175.     RealPos = RemoveGadget( Window, Gadgets, Pos )
  176.       D0              A0      A1      D0
  177.     
  178.     UWORD    RealPos;
  179.     struct Window    *Window;
  180.     struct Gadget    *Gadgets;
  181.     UWORD        POS;
  182.  
  183. becomes:
  184.     RealPos = RemoveGadget( Window, Gadgets, Pos )
  185.       D0              A0      A1      D0
  186.     UWORD RemoveGadget( struct Window *, struct Gadgets *, UWORD );
  187.  
  188.  
  189. If any of these lines are too long, exert your individuality and word-wrap
  190. it! 
  191.  
  192.  
  193. ---------------------------------
  194. FUNCTION
  195. ---------------------------------
  196.  
  197.     !describe WHAT your function does in generally accepted English,
  198.     !keep jargon to a minimum, but don't sacrifice clarity and accuracy.
  199.     !You may even take the radical step of using a spelling checker. Nah.
  200.  
  201. ---------------------------------
  202. INPUTS
  203. ---------------------------------
  204. Describe the range and domain of each input parameter.  Use the same
  205. name token used in the first SYNOPSIS line (so the user can match inputs
  206. to the descriptions).  The preferred follower is "-". (See example)
  207. Don't forget to note the actions taken for NULL pointers!.
  208.  
  209. The suggestion has been made to standardize on:
  210.  
  211.     TheToken - If the description is long, then indent the second line
  212.         by 4 spaces.  Many modules currently use whatever number of spaces
  213.         looks good.
  214.  
  215.  
  216. ---------------------------------
  217. RESULT
  218. ---------------------------------
  219. Describe the range and domain of each output.
  220. Describe which abnormal conditions produce each error output.
  221.  
  222.  
  223. ---------------------------------
  224. EXAMPLE
  225. ---------------------------------
  226. An optional *short* example of how your function is called.  This must BE
  227. TESTED.  Write, test, then remove lines if needed to shorten the example.
  228. Use "..." to indicate removed sections.  Do not edit the example after
  229. creation (unless you retest).
  230.  
  231. | Sadly some compilers do not allow nested C comments.  Instead we will
  232. | reverse the \, and have autodoc magically fix things up.
  233.  
  234.     \* write this in your autodoc *\
  235.     /* and autodoc will convert to the standard form */
  236.  
  237. | Be sure to search old source code created prior to this new definition!
  238.  
  239. ---------------------------------
  240. NOTES
  241. ---------------------------------
  242.     Helpful hints, warnings, tricks, traps, etc. (optional)
  243.  
  244.  
  245. ---------------------------------
  246. BUGS
  247. ---------------------------------
  248.     !if there are any, describe the bug, and how it can be avoided.
  249.     List versions, workarounds, etc.
  250.  
  251. ---------------------------------
  252. SEE ALSO
  253. ---------------------------------
  254.     If there are other functions which help describe the data structures,
  255.     or are otherwise related to this function, place their names here.
  256.     Note include files, where appropriate (it is acceptable to list
  257.     just the ".h" file, an assume the assembly user will find the ".i".)
  258.  
  259.     Functions in THIS module are simply listed, with () to indicate they
  260.     are a function.  Functions from OTHER modules are preceded by the
  261.     module name.  (See the StealMoney() autodoc for examples).
  262.  
  263.  
  264. NOTE: See autodoc.sample for other templates
  265.  
  266.  
  267. /****** / ******************************************
  268. *
  269. *   NAME    
  270. *
  271. *   SYNOPSIS
  272. *
  273. *   FUNCTION
  274. *
  275. *   INPUTS
  276. *
  277. *   RESULT
  278. *
  279. *   EXAMPLE
  280. *
  281. *   NOTES
  282. *
  283. *   BUGS
  284. *
  285. *   SEE ALSO
  286. *
  287. ******************************************************************************
  288. *
  289. */
  290.  
  291.